﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace PPE_gestion_commercial
{
    public partial class AjoutSuppCategorie : Form
    {
        // Définition des variables pour la connexion avec SQL Server
        SqlConnection connex;
        SqlCommand cmd;
        SqlDataReader dr;
        SqlDataReader dr2;
        SqlDataReader dr3;
        SqlDataReader dr4;

        List<categorie> listeCategorie = new List<categorie>();

        private string strconn = "server=78.241.116.47;Network Library=DBMSSOCN; database=gestion; User Id=Gestion; Password=gestion";
        public string typeForm = "";

        public AjoutSuppCategorie(string type)
        {
            InitializeComponent();
            typeForm = type;
        }

        private void annulButton_Click(object sender, EventArgs e)
        {
            if (typeForm == "modif")
            {
                ModifProduit m = new ModifProduit();
                m.Show();
            }
            else
            {
                AjoutProduit a = new AjoutProduit();
                a.Show();
            }
            this.Close();
        }

        private void ajoutButton_Click(object sender, EventArgs e)
        {
            int max = 0;
            bool ok = false;

            if (catTextBox.Text != "")
            {
                foreach (categorie c in listeCategorie)
                {
                    if (c.cat.ToLower() == catTextBox.Text.ToLower())
                        ok = true;
                    else
                        ok = false;
                }

                if (ok == false)
                {
                    // Connexion à la base
                    if (connex != null && connex.State == ConnectionState.Closed)
                    {
                        connex.Open();
                    }
                    // On récupère l'identifiant du produit maximal qui se trouve dans la BDD
                    string sql = "SELECT max(idType) FROM typeProduit";
                    cmd = new SqlCommand(sql, connex);
                    dr = cmd.ExecuteReader();
                    dr.Read();
                    if (dr[0] != DBNull.Value)
                    {
                        max = Convert.ToInt16(dr[0].ToString());
                    }
                    else
                    {
                        max = 0;
                    }
                    dr.Close();

                    max = max + 1;

                    // On exécute la requête qui va ajouter le produit dans la BDD avec les données saisies 
                    string sql2 = "insert into typeProduit values(" + max + ",'" + catTextBox.Text.Replace("'", "''") + "')";
                    cmd = new SqlCommand(sql2, connex);
                    dr2 = cmd.ExecuteReader();

                    dr2.Close();
                    // Fermeture de la connexion à la BDD
                    connex.Close();

                    MessageBox.Show("Votre Catégorie a bien été ajouté!");
                    if (typeForm == "modif")
                    {
                        ModifProduit m = new ModifProduit();
                        m.Show();
                    }
                    else
                    {
                        AjoutProduit a = new AjoutProduit();
                        a.Show();
                    }
                    this.Close();
                }
                else
                    MessageBox.Show("Cette catégorie existe déjà!");
            }
            else
                MessageBox.Show("Attention! Vous n'avez pas rempli le champ Catégorie.");
        }

        private void suppButton_Click(object sender, EventArgs e)
        {
            int id = 0;
            if (suppComboBox.SelectedItem != null)
            {
                foreach (categorie c in listeCategorie)
                {
                    if (c.cat == suppComboBox.SelectedItem.ToString())
                        id = c.id;
                }

                connex.Open();
                // On exécute la requête qui va ajouter le produit dans la BDD avec les données saisies 
                string sqlDelete = "DELETE FROM typeProduit where idType = '"+ id+"'";
                cmd = new SqlCommand(sqlDelete, connex);
                dr4 = cmd.ExecuteReader();

                dr4.Close();
                // Fermeture de la connexion à la BDD
                connex.Close();

                MessageBox.Show("Votre Catégorie a bien été supprimé!");
                if (typeForm == "modif")
                {
                    ModifProduit m = new ModifProduit();
                    m.Show();
                }
                else
                {
                    AjoutProduit a = new AjoutProduit();
                    a.Show();
                }
                this.Close();
            }
            else
            {
                MessageBox.Show("Vous devez séléctionner une catégorie dans la liste");
            }
        }

        private void AjoutCategorie_Load(object sender, EventArgs e)
        {
            connex = new SqlConnection();
            connex.ConnectionString = strconn;
            connex.Open();

            string sqlCat = "SELECT idType,nomType FROM typeProduit order by idType";
            cmd = new SqlCommand(sqlCat, connex);
            dr3 = cmd.ExecuteReader();
            while (dr3.Read())
            {
                categorie cat = new categorie();
                cat.id = Convert.ToInt32(dr3[0]);
                cat.cat = dr3[1].ToString();
                listeCategorie.Add(cat);
            }
            dr3.Close();
            connex.Close();
            int i = 1;
            foreach (categorie c in listeCategorie)
            {
                suppComboBox.Items.Add(c.cat);
                i++;
            }
        }

    }
}
